const CompressionPlugin = require('compression-webpack-plugin')

const path = require('path')
const resolve = (dir) => {
  return path.join(__dirname, dir)
}

// 配置
const port = 30001
// const proxyUrl = 'http://api.2101.com'
const proxyUrl = 'http://api.binluo'

// build print
console.log(process.env.VUE_APP_BASE_API, 'online:', process.env.VUE_APP_ONLINE)

module.exports = {
  configureWebpack: (config) => {
    if (process.env.NODE_ENV === 'production') {
      config['performance'] = {
        'maxEntrypointSize': 10000000,
        'maxAssetSize': 3000000
      }
      return {
        plugins: [
          new CompressionPlugin({
            test: /\.js$|\.html$|\.css$|\.jpg$|\.jpeg$|\.png/, // 需要压缩的文件类型
            threshold: 10240, // 归档需要进行压缩的文件大小最小值，我这个是10K以上的进行压缩
            deleteOriginalAssets: false // 是否删除原文件
          })
        ]
      }
    }
  },

  css: {
    loaderOptions: {
      stylus: {
        'resolve url': true,
        import: [
          './src/theme'
        ]
      }
    }
  },
  pluginOptions: {
    'cube-ui': {
      postCompile: true,
      theme: true
    }
  },

  // 别名
  chainWebpack: (config) => {
    config.resolve.alias
      .set('@', resolve('src'))
    // .set('@components', resolve('src/components'))
  },

  // 压缩
  productionSourceMap: process.env.NODE_ENV === 'dev',

  // 编译输出目录
  outputDir: process.env.VUE_APP_ONLINE === 'YES' ? '../online-www/h5' : '../www/h5',
  publicPath: '/',

  devServer: {
    // 忽略
    watchOptions: {
      ignored: ['node_modules']
    },
    host: '0.0.0.0',
    port: port, // 端口号
    https: false, // https:{type:Boolean}
    open: false, // 配置自动启动浏览器
    /*
      1) 开发的时候,必须使用代理,来解决yii的跨域问题, node是可以用cors解决的
        并且需要在.env.development中设置:
        VUE_APP_BASE_API = ''
      2) 上线后,使用nginx解决跨域问题, 需要在.env.production中设置:
        VUE_APP_BASE_API = 'http://h5.miyi.com'
        然后在Nginx配置中,把h5.kw20.com代理到api.kw20.com
      另外) 如果是node开发的api,可以不用配置vue的代理
        直接设置.env.xxx配置文件就行了
     */
    proxy: {
      '/api': {
        target: proxyUrl,
        changeOrigin: true,
        pathRewrite: {
          '^/api/': '/h5/',
          '^/apis/': '/'
        }
      },
      // 图片
      '/uploads/*': {
        target: proxyUrl,
        changeOrigin: true
      },
      // 二维码
      // 注册与名称与路由冲突否
      '/qrcode/*': {
        target: proxyUrl,
        changeOrigin: true
      }
    }
  }
}
